Simplification of Phase 2 HLT tracking configs by updating HighPurity ID with pass-through options#208
Conversation
|
/run all |
|
The PR was built and ran successfully in standalone mode. Here are some of the comparison plots.
The full set of validation and comparison plots can be found here. Here is a timing comparison: |
|
The PR was built and ran successfully with CMSSW. Here are some plots. OOTB All Tracks
The full set of validation and comparison plots can be found here. |
|
The PR was built and ran successfully with CMSSW on GPU. Here are some plots. OOTB All Tracks
The full set of validation and comparison plots can be found here. |
|
The PR was built and ran successfully in standalone mode on GPU. Here are some of the comparison plots.
The full set of validation and comparison plots can be found here. Here is a timing comparison: |
| (~singleIterPatatrack & trackingLST & ~seedingLST).toReplaceWith(hltGeneralTracks, _hltGeneralTracksLST) | ||
|
|
||
| _hltGeneralTracksSingleIterPatatrackLST = hltGeneralTracks.clone( | ||
| TrackProducers = ["hltInitialStepTrackSelectionHighPuritypTTCLST", "hltInitialStepTrackSelectionHighPuritypLSTCLST", "hltInitialStepTracksT5TCLST"], |
There was a problem hiding this comment.
does the order of candidates matter for the TrackListMerger? In the earlier version we have pTx, pLS, T5, while in the LST TC collection the order is pTx, T5, pLS.
For a test I can suggest to change the order here to see if there is a change and if that will agree with the version of this PR.
There was a problem hiding this comment.
Good idea, I did a quick test to try this. I rolled back to the master branch (before any changes to the ID) and changed the order of the general track collections. Here is the hltGeneralTracks module in this updated configuration:
Then, I ran this and reproduced the plots, comparing "old ID", "old ID + swapped T5 and pLS order" and "new ID, new collections". This is what I got (all plots):
Unfortunately this doesn't seem to be the cause...
There was a problem hiding this comment.
Following up on our discussion, I changed the order the LST TrackCandidates are added in the LSTOutputConventer product. For completeness, here is how I did it:
- I commented out this line:
- I added in L285 of the same file:
- For pT -> T5 -> pLS order (
pTT5pLSlabel in the plot, in red):
outputTC.insert(outputTC.end(), outputpTTC.begin(),outputpTTC.end()); outputTC.insert(outputTC.end(), outputT5TC.begin(),outputT5TC.end()); outputTC.insert(outputTC.end(), outputpLSTC.begin(),outputpLSTC.end()); - For pT -> pLS -> T5 order (
pTpLST5label in the plot, in black):
outputTC.insert(outputTC.end(), outputpTTC.begin(),outputpTTC.end()); outputTC.insert(outputTC.end(), outputpLSTC.begin(),outputpLSTC.end()); outputTC.insert(outputTC.end(), outputT5TC.begin(),outputT5TC.end());
- For pT -> T5 -> pLS order (
No differences observed (all plots):

most of the increase is with no pixel hits, most likely T5s |
aa80881 to
2a6b1c8
Compare
| // for tracks without pixel hits (displaced tracks) | ||
| auto nLayers = trk.hitPattern().trackerLayersWithMeasurement(); | ||
| if (passThroughForDisplaced) { | ||
| if (nPixelHits(trk) == 0 && nLayers > 4) |
There was a problem hiding this comment.
better make this (nLayers) configurable
There was a problem hiding this comment.
Should be fixed in the last commit.
98984d1 to
f471408
Compare
|
/run all |
|
The PR was built and ran successfully in standalone mode. Here are some of the comparison plots.
The full set of validation and comparison plots can be found here. Here is a timing comparison: |
|
The PR was built and ran successfully with CMSSW. Here are some plots. OOTB All Tracks
The full set of validation and comparison plots can be found here. |
slava77
left a comment
There was a problem hiding this comment.
the updates look OK, but then we have a side-discussion about having a more relaxed nLayers cut in the seedingLST case (a mix with mkFit).
It's probably time to change to no-draft
and consider squashing the commits
79b5578 to
8b261c0
Compare
|
/run all |
|
The PR was built and ran successfully in standalone mode. Here are some of the comparison plots.
The full set of validation and comparison plots can be found here. Here is a timing comparison: |
|
The PR was built and ran successfully with CMSSW. Here are some plots. OOTB All Tracks
The full set of validation and comparison plots can be found here. |
HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackCutClassifier_cfi.py
Show resolved
Hide resolved
4055b7b to
5c966db
Compare
5c966db to
178b635
Compare
| trackCandidates = ["hltInitialStepTrackCandidates:pTCsLST", "hltInitialStepTrackCandidates:t5TCsLST", "hltHighPtTripletStepTrackCandidates"]) | ||
| (~singleIterPatatrack & trackingLST & seedingLST).toModify(process.trackingNtuple, | ||
| trackCandidates = ["hltInitialStepTrackCandidates:pTTCsLST", "hltInitialStepTrackCandidates:t5TCsLST", "hltHighPtTripletStepTrackCandidatespLSTCLST"]) | ||
| singleIterPatatrack.toModify(process.trackingNtuple, trackCandidates = ["hltInitialStepTrackCandidates"]) |
There was a problem hiding this comment.
it looks like this needs to be undone; the number of candidate collections should be the same as the seed collections.
There was a problem hiding this comment.
Which of all the configurations is problematic? I guess this one (L134):
(singleIterPatatrack & trackingLST & ~seedingLST).toModify(_seedProducers, names = ["hltInputLST", "hltInitialStepTrackCandidates"])
as it is the only one with singleIterPatatrack on and two seed collections?
Could you remind me of the logic of having also hltInitialStepTrackCandidates in the seed producers for that configuration?
There was a problem hiding this comment.
the ~singleIterPatatrack variants are still there and are also affected (although being phased out by other means now)
the setup before this PR was meant to cover the pixel seeds input to LST in the first collection and the T5 de novo seeds in the second collection
There was a problem hiding this comment.
OK, so the problem is that L162-L163:
(~singleIterPatatrack & trackingLST & seedingLST).toModify(process.trackingNtuple,
seedAlgoDetect = False, seedAlgos = [getattr(_algo,"initialStep"), getattr(_algo,"initialStep"), getattr(_algo,"highPtTripletStep")])
has three seed collections while L166 (that is applied for ~singleIterPatatrack) has two:
trackingPhase2PU140.toModify(process.trackingNtuple, trackCandidates = ["hltInitialStepTrackCandidates", "hltHighPtTripletStepTrackCandidates"])
Which configuration are you interested in? Do we need a patch or can you make do for now? Or does it cause any issues centrally?
There was a problem hiding this comment.
I need a fix to run tests for my #234 with the singleIter
I can include it there
I'm not committed to fix the multi-iter HLT variant.





























This PR updates the high purity ID with two passthrough options:
a) Passthrough for tracks without pixel tracker hits. The only requirement for these tracks is that they have at least 4 hits (that covers T5s with a potential loss of a layer during fitting). The latter requirement is configurable.
b) Passthrough for all tracks. No requirement is applied on the tracks. This is exploited in the single iteration configurations running LST seeding, as these configurations have a very low fake+duplicate. Running the high purity module unifies the configuration and enables the correct usage in downstream objects, in case they require tracks with high purity ID.
The above updates enable a large simplification of the HLT tracking configurations, which is done also in this PR. Below, the relevant procModifier combinations have been validated. The current configuration is in blue and the configuration proposed in this PR is in red:
trackingLST, falling under option a) above (all plots)trackingLST,seedingLST, falling under option a) above (all plots)singleIterPatatrack,phase2CAExtension,trackingLST, falling under option a) above (all plots)singleIterPatatrack,phase2CAExtension,trackingLST,seedingLST, falling under option b) above (all plots)phase2CAExtension,singleIterPatatrack,trackingLST,seedingLST,trackingMkFitCommon,hltTrackingMkFitInitialStep, falling under option b) above (all plots)Comments on the physics perfomance: